<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 合并运算符 ...
        // 在形参上使用...表示合并 其他位置表示展开

        // 1、计算最大值
        // function max(){
        //     console.log(arguments)
        //     // 假设第一个元素是最大值
        //     let maxValue = -Infinity;
        //     for(let i = 0;i<arguments.length;i++){
        //         if(arguments[i]>maxValue){
        //             maxValue = arguments[i];
        //         }
        //     }
        //     return maxValue
        //     // Number.MAX_VALUE 数字的最大值
        //     // console.log(Number.MAX_VALUE);
        //     // console.log(Number.MAX_SAFE_INTEGER);
        // }
       
        // 由于箭头函数没有arguments 无法计算
        let max = (...args)=>{
            // 形参上args 前面使用...表示合并 是将实参中的所有数据合并到一个变量args上
            // console.log(args)
            // 假设负无穷是最大值
            let maxValue = -Infinity;
            for(let i = 0;i<args.length;i++){
                if(args[i]>maxValue){
                    maxValue = args[i];
                }
            }
            return maxValue
        }

        console.log(max(-10,0,12,34));

        // fn2函数 第一个实参赋值给type形参，后面的其他参数 合并为数组之后赋值给args
        let fn2 = (type,...args)=>{
            console.log(type,args)
        }
        let arr = [1,2,34];
        // 函数调用 第一个参数是add 其他的参数是arr展开结果
        fn2('add',...arr);

    </script>
</body>
</html>